home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / mail / db.1.85.tar.gz / db.1.85.tar / db.1.85 / PORT / ptx.2.0 / include / compat.h < prev    next >
C/C++ Source or Header  |  1994-06-20  |  7KB  |  233 lines

  1. /*-
  2.  * Copyright (c) 1991, 1993
  3.  *    The Regents of the University of California.  All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  *    This product includes software developed by the University of
  16.  *    California, Berkeley and its contributors.
  17.  * 4. Neither the name of the University nor the names of its contributors
  18.  *    may be used to endorse or promote products derived from this software
  19.  *    without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  *
  33.  *    @(#)compat.h    8.13 (Berkeley) 2/21/94
  34.  */
  35.  
  36. #ifndef    _COMPAT_H_
  37. #define    _COMPAT_H_
  38.  
  39. #include <sys/types.h>
  40. #include <sys/select.h>            /* For fd_set. */
  41.  
  42. /*
  43.  * If your system doesn't typedef u_long, u_short, or u_char, change
  44.  * the 0 to a 1.
  45.  */
  46. #if 1
  47. typedef unsigned char    u_char;        /* 4.[34]BSD names. */
  48. typedef unsigned int    u_int;
  49. typedef unsigned long    u_long;
  50. typedef unsigned short    u_short;
  51. #endif
  52.  
  53. /* If your system doesn't typedef size_t, change the 0 to a 1. */
  54. #if 0
  55. typedef unsigned int    size_t;        /* POSIX, 4.[34]BSD names. */
  56. #endif
  57.  
  58. /* If your system doesn't typedef ssize_t, change the 0 to a 1. */
  59. #if 0
  60. typedef    int        ssize_t;    /* POSIX names. */
  61. #endif
  62.  
  63. /*
  64.  * If your system doesn't have the POSIX type for a signal mask,
  65.  * change the 0 to a 1.
  66.  */
  67. #if 0                    /* POSIX 1003.1 signal mask type. */
  68. typedef unsigned int    sigset_t;
  69. #endif
  70.  
  71. /*
  72.  * If your system's vsprintf returns a char *, not an int,
  73.  * change the 0 to a 1.
  74.  */
  75. #if 0
  76. #define    VSPRINTF_CHARSTAR
  77. #endif
  78.  
  79. /*
  80.  * If you don't have POSIX 1003.1 signals, the signal code surrounding the 
  81.  * temporary file creation is intended to block all of the possible signals
  82.  * long enough to create the file and unlink it.  All of this stuff is
  83.  * intended to use old-style BSD calls to fake POSIX 1003.1 calls.
  84.  */
  85. #ifdef    NO_POSIX_SIGNALS
  86. #define    sigemptyset(set)    (*(set) = 0)
  87. #define    sigfillset(set)        (*(set) = ~(sigset_t)0, 0)
  88. #define    sigaddset(set,signo)    (*(set) |= sigmask(signo), 0)
  89. #define    sigdelset(set,signo)    (*(set) &= ~sigmask(signo), 0)
  90. #define    sigismember(set,signo)    ((*(set) & sigmask(signo)) != 0)
  91.  
  92. #define    SIG_BLOCK    1
  93. #define    SIG_UNBLOCK    2
  94. #define    SIG_SETMASK    3
  95.  
  96. static int __sigtemp;        /* For the use of sigprocmask */
  97.  
  98. /* Repeated test of oset != NULL is to avoid "*0". */
  99. #define    sigprocmask(how, set, oset)                    \
  100.     ((__sigtemp =                            \
  101.     (((how) == SIG_BLOCK) ?                        \
  102.         sigblock(0) | *(set) :                    \
  103.     (((how) == SIG_UNBLOCK) ?                    \
  104.         sigblock(0) & ~(*(set)) :                \
  105.     ((how) == SIG_SETMASK ?                        \
  106.         *(set) : sigblock(0))))),                \
  107.     ((oset) ? (*(oset ? oset : set) = sigsetmask(__sigtemp)) :    \
  108.         sigsetmask(__sigtemp)), 0)
  109. #endif
  110.  
  111. /*
  112.  * If your system doesn't have an include file with the appropriate
  113.  * byte order set, make sure you specify the correct one.
  114.  */
  115. #ifndef BYTE_ORDER
  116. #define    LITTLE_ENDIAN    1234        /* LSB first: i386, vax */
  117. #define    BIG_ENDIAN    4321        /* MSB first: 68000, ibm, net */
  118. #define    BYTE_ORDER    BIG_ENDIAN    /* Set for your system. */
  119. #endif
  120.  
  121. #if defined(SYSV) || defined(SYSTEM5)
  122. #define    index(a, b)        strchr(a, b)
  123. #define    rindex(a, b)        strrchr(a, b)
  124. #define    bzero(a, b)        memset(a, 0, b)
  125. #define    bcmp(a, b, n)        memcmp(a, b, n)
  126. #define    bcopy(a, b, n)        memmove(b, a, n)
  127. #endif
  128.  
  129. #if defined(BSD) || defined(BSD4_3)
  130. #define    strchr(a, b)        index(a, b)
  131. #define    strrchr(a, b)        rindex(a, b)
  132. #define    memcmp(a, b, n)        bcmp(a, b, n)
  133. #define    memmove(a, b, n)    bcopy(b, a, n)
  134. #endif
  135.  
  136. /*
  137.  * 32-bit machine.  The db routines are theoretically independent of
  138.  * the size of u_shorts and u_longs, but I don't know that anyone has
  139.  * ever actually tried it.  At a minimum, change the following #define's
  140.  * if you are trying to compile on a different type of system.
  141.  */
  142. #ifndef USHRT_MAX
  143. #define    USHRT_MAX        0xFFFF
  144. #define    ULONG_MAX        0xFFFFFFFF
  145. #endif
  146.  
  147. #ifndef O_ACCMODE            /* POSIX 1003.1 access mode mask. */
  148. #define    O_ACCMODE    (O_RDONLY|O_WRONLY|O_RDWR)
  149. #endif
  150.  
  151. #ifndef    _POSIX2_RE_DUP_MAX        /* POSIX 1003.2 RE limit. */
  152. #define    _POSIX2_RE_DUP_MAX    255
  153. #endif
  154.  
  155. /*
  156.  * If you can't provide lock values in the open(2) call.  Note, this
  157.  * allows races to happen.
  158.  */
  159. #ifndef O_EXLOCK            /* 4.4BSD extension. */
  160. #define    O_EXLOCK    0
  161. #endif
  162.  
  163. #ifndef O_SHLOCK            /* 4.4BSD extension. */
  164. #define    O_SHLOCK    0
  165. #endif
  166.  
  167. #ifndef EFTYPE
  168. #define    EFTYPE        EINVAL        /* POSIX 1003.1 format errno. */
  169. #endif
  170.  
  171. #ifndef    WCOREDUMP            /* 4.4BSD extension */
  172. #define    WCOREDUMP(a)    0
  173. #endif
  174.  
  175. #ifndef    STDERR_FILENO
  176. #define    STDIN_FILENO    0        /* ANSI C #defines */
  177. #define    STDOUT_FILENO    1
  178. #define    STDERR_FILENO    2
  179. #endif
  180.  
  181. #ifndef SEEK_END
  182. #define    SEEK_SET    0        /* POSIX 1003.1 seek values */
  183. #define    SEEK_CUR    1
  184. #define    SEEK_END    2
  185. #endif
  186.  
  187. #ifndef _POSIX_VDISABLE            /* POSIX 1003.1 disabling char. */
  188. #define    _POSIX_VDISABLE    0        /* Some systems used 0. */
  189. #endif
  190.  
  191. #ifndef    TCSASOFT            /* 4.4BSD extension. */
  192. #define    TCSASOFT    0
  193. #endif
  194.  
  195. #ifndef _POSIX2_RE_DUP_MAX        /* POSIX 1003.2 values. */
  196. #define    _POSIX2_RE_DUP_MAX    255
  197. #endif
  198.  
  199. #ifndef NULL                /* ANSI C #defines NULL everywhere. */
  200. #define    NULL        0
  201. #endif
  202.  
  203. #ifndef    MAX                /* Usually found in <sys/param.h>. */
  204. #define    MAX(_a,_b)    ((_a)<(_b)?(_b):(_a))
  205. #endif
  206. #ifndef    MIN                /* Usually found in <sys/param.h>. */
  207. #define    MIN(_a,_b)    ((_a)<(_b)?(_a):(_b))
  208. #endif
  209.  
  210. /* Default file permissions. */
  211. #ifndef DEFFILEMODE            /* 4.4BSD extension. */
  212. #define    DEFFILEMODE    (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
  213. #endif
  214.  
  215. #ifndef S_ISDIR                /* POSIX 1003.1 file type tests. */
  216. #define    S_ISDIR(m)    ((m & 0170000) == 0040000)    /* directory */
  217. #define    S_ISCHR(m)    ((m & 0170000) == 0020000)    /* char special */
  218. #define    S_ISBLK(m)    ((m & 0170000) == 0060000)    /* block special */
  219. #define    S_ISREG(m)    ((m & 0170000) == 0100000)    /* regular file */
  220. #define    S_ISFIFO(m)    ((m & 0170000) == 0010000)    /* fifo */
  221. #endif
  222. #ifndef S_ISLNK                /* BSD POSIX 1003.1 extensions */
  223. #define    S_ISLNK(m)    ((m & 0170000) == 0120000)    /* symbolic link */
  224. #define    S_ISSOCK(m)    ((m & 0170000) == 0140000)    /* socket */
  225. #endif
  226.  
  227. /* The type of a va_list. */
  228. #ifndef _BSD_VA_LIST_            /* 4.4BSD #define. */
  229. #define    _BSD_VA_LIST_    char *
  230. #endif
  231.  
  232. #endif /* !_COMPAT_H_ */
  233.